from PublicReference.base import *

class 极诣契魔者主动技能(主动技能):
    def 等效CD(self, 武器类型):
        if 武器类型 == '巨剑':
            return round(self.CD / self.恢复 * 1.1, 1)
        if 武器类型 == '太刀':
            return round(self.CD / self.恢复 * 0.95, 1)
        if 武器类型 == '钝器':
            return round(self.CD / self.恢复 * 1.05, 1)
        if 武器类型 == '短剑':
            return round(self.CD / self.恢复 * 1.0, 1)

class 极诣契魔者技能0(被动技能):
    名称 = '唤魔蛇腹剑'
    所在等级 = 15
    等级上限 = 11
    基础等级 = 1
    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.11 + 0.015 * self.等级, 5)

class 极诣契魔者技能1(极诣契魔者主动技能):
    名称 = '蛇腹剑破'
    所在等级 = 20
    等级上限 = 60
    基础等级 = 43
    基础 = 2320.09
    成长 = 267.91
    CD = 5.0
    TP成长 = 0.10
    TP上限 = 7

class 极诣契魔者技能2(极诣契魔者主动技能):
    名称 = '蛇腹剑舞'
    所在等级 = 20
    等级上限 = 60
    基础等级 = 43
    基础 = 2723.33
    成长 = 307.67
    CD = 6.0
    TP成长 = 0.10
    TP上限 = 7

class 极诣契魔者技能3(极诣契魔者主动技能):
    名称 = '蛇腹剑刺'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    基础 = 4461.45
    成长 = 478.55
    CD = 8.0
    TP成长 = 0.10
    TP上限 = 7

class 极诣契魔者技能4(极诣契魔者主动技能):
    名称 = '蛇腹剑缠'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    基础 = 5698.12
    成长 = 497.88
    CD = 8.0
    TP成长 = 0.10
    TP上限 = 7

class 极诣契魔者技能5(极诣契魔者主动技能):
    名称 = '蛇腹剑灭'
    所在等级 = 30
    等级上限 = 60
    基础等级 = 38
    基础 = 6142.03
    成长 = 656.97
    CD = 12.0
    TP成长 = 0.10
    TP上限 = 7

class 极诣契魔者技能6(被动技能):
    名称 = '魔剑控制'
    所在等级 = 30
    等级上限 = 30
    基础等级 = 20

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            if self.等级 <= 20:
                return round(1.000 + 0.015 * self.等级, 5)
            else:
                return round(1.300 + 0.025 * (self.等级 - 20), 5)

    def 物理攻击力倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            if self.等级 <= 20:
                return round(1.000 + 0.015 * self.等级, 5)
            else:
                return round(1.300 + 0.025 * (self.等级 - 20), 5)

    def 魔法攻击力倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            if self.等级 <= 20:
                return round(1.000 + 0.015 * self.等级, 5)
            else:
                return round(1.300 + 0.025 * (self.等级 - 20), 5)

class 极诣契魔者技能7(极诣契魔者主动技能):
    名称 = '血饮狂舞'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36
    基础 = 9516.98
    成长 = 1076.02
    CD = 20.0
    TP成长 = 0.10
    TP上限 = 7
    是否有护石 = 1

    def 装备护石(self):
        self.倍率 *= 1.243
        self.CD *= 0.9

class 极诣契魔者技能8(极诣契魔者主动技能):
    名称 = '碎魔剑'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36
    基础 = 8693.25
    成长 = 981.75
    CD = 20.0
    TP成长 = 0.10
    TP上限 = 7

class 极诣契魔者技能9(极诣契魔者主动技能):
    名称 = '群魔乱舞'
    所在等级 = 40
    等级上限 = 60
    基础等级 = 22
    基础 = 13855
    成长 = 2595
    CD = 30.0
    TP成长 = 0.10
    TP上限 = 7
    是否有护石 = 1
    def 装备护石(self):
        self.倍率 *= 1.24

class 极诣契魔者技能10(极诣契魔者主动技能):
    名称 = '唤魔塔莫斯之袭'
    所在等级 = 45
    等级上限 = 60
    基础等级 = 31
    基础 = 16677.13
    成长 = 1883.87
    CD = 40.0
    TP成长 = 0.10
    TP上限 = 7
    是否有护石 = 1

    斩击百分比 = 2665.44
    多段百分比 = 883.50
    多段次数 = 8
    终结百分比 = 6943.72

    def 等效百分比(self, 武器类型):
        if self.等级 == 0:
            return 0
        else:
            百分比 = self.斩击百分比 + self.多段百分比 * self.多段次数 + self.终结百分比 
            return int(百分比 * (1 + self.等级 / 8.85) * (1 + self.TP成长 * self.TP等级) * self.倍率)

    def 装备护石(self):
        self.斩击百分比 = 0
        self.倍率 *= 1.39

class 极诣契魔者技能11(被动技能):
    名称 = '贪欲之燔祭'
    所在等级 = 48
    等级上限 = 40
    基础等级 = 20

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.025 + 0.02 * self.等级, 5)


class 极诣契魔者技能12(极诣契魔者主动技能):
    名称 = '空绝斩千刃'
    所在等级 = 50
    等级上限 = 40
    基础等级 = 12
    基础 = 41047.00
    成长 = 12394.50
    倍率 = 1.1
    CD = 145.0

class 极诣契魔者技能13(极诣契魔者主动技能):
    名称 = '唤魔逆天之普诺'
    所在等级 = 60
    等级上限 = 40
    基础等级 = 23
    基础 = 19422.96
    成长 = 2194.04
    CD = 30.0
    TP成长 = 0.10
    TP上限 = 7
    是否有护石 = 1
    def 装备护石(self):
        self.倍率 *= 1.08

class 极诣契魔者技能14(极诣契魔者主动技能):
    名称 = '汲血魔剑'
    所在等级 = 70
    等级上限 = 40
    基础等级 = 18
    基础 = 28860.53
    成长 = 3258.47
    CD = 50.0
    TP成长 = 0.10
    TP上限 = 7
    是否有护石 = 1
    def 装备护石(self):
        self.倍率 *= 1.14

class 极诣契魔者技能15(被动技能):
    名称 = '唤魔弑神剑'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 11

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.22 + 0.02 * self.等级, 5)

class 极诣契魔者技能16(极诣契魔者主动技能):
    名称 = '空绝斩地裂'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 16
    基础 = 45921.20
    成长 = 5184.80
    CD = 40.0

class 极诣契魔者技能17(极诣契魔者主动技能):
    名称 = '弑神剑极'
    所在等级 = 80
    等级上限 = 40
    基础等级 = 13
    基础 = 50815.33
    成长 = 5737.67
    CD = 45.0

class 极诣契魔者技能18(极诣契魔者主动技能):
    名称 = '弑神剑诸神献祭'
    所在等级 = 85
    等级上限 = 40
    基础等级 = 5
    基础 = 115147.00
    成长 = 34769.00
    CD = 180.0

class 极诣契魔者技能19(被动技能):
    名称 = '魔源觉醒'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 4

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)

class 极诣契魔者技能20(极诣契魔者主动技能):
    名称 = '蛇舞血轮剑'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 6
    基础 = 105546.60
    成长 = 11917.40
    CD = 60.0

class 极诣契魔者技能21(极诣契魔者主动技能):
    名称 = '弑神剑恶魔孤岛'
    所在等级 = 100
    等级上限 = 40
    基础等级 = 2
    基础 = 296448.00
    成长 = 89516.00
    CD = 290.0

    关联技能 = ['无']

    def 加成倍率(self, 武器类型):
        return 0.0

极诣契魔者技能列表 = []
i = 0
while i >= 0:
    try:
        exec('极诣契魔者技能列表.append(极诣契魔者技能'+str(i)+'())')
        i += 1
    except:
        i = -1

极诣契魔者技能序号 = dict()
for i in range(len(极诣契魔者技能列表)):
    极诣契魔者技能序号[极诣契魔者技能列表[i].名称] = i

极诣契魔者一觉序号 = 0
极诣契魔者二觉序号 = 0
极诣契魔者三觉序号 = 0
for i in 极诣契魔者技能列表:
    if i.所在等级 == 50:
        极诣契魔者一觉序号 = 极诣契魔者技能序号[i.名称]
    if i.所在等级 == 85:
        极诣契魔者二觉序号 = 极诣契魔者技能序号[i.名称]
    if i.所在等级 == 100:
        极诣契魔者三觉序号 = 极诣契魔者技能序号[i.名称]

极诣契魔者护石选项 = ['无']
for i in 极诣契魔者技能列表:
    if i.是否有伤害 == 1 and i.是否有护石 == 1:
        极诣契魔者护石选项.append(i.名称)

极诣契魔者符文选项 = ['无']
for i in 极诣契魔者技能列表:
    if i.所在等级 >= 20 and i.所在等级 <= 80 and i.所在等级 != 50 and i.是否有伤害 == 1:
        极诣契魔者符文选项.append(i.名称)

class 极诣契魔者角色属性(角色属性):

    职业名称 = '极诣契魔者'

    武器选项 = ['巨剑','钝器','太刀','短剑']
    
    #'物理百分比','魔法百分比','物理固伤','魔法固伤'
    伤害类型选择 = ['物理百分比']
    
    #默认
    伤害类型 = '物理百分比'
    防具类型 = '重甲'
    防具精通属性 = ['力量']

    主BUFF = 2.00
   
    #基础属性(含唤醒)
    基础力量 = 963.0
    基础智力 = 788.0
    
    #适用系统奶加成
    力量 = 基础力量
    智力 = 基础智力

    #人物基础 + 唤醒
    物理攻击力 = 65.0
    魔法攻击力 = 65.0
    独立攻击力 = 1045.0
    火属性强化 = 13
    冰属性强化 = 13
    光属性强化 = 13
    暗属性强化 = 13
  
    def __init__(self):
        self.技能栏= copy.deepcopy(极诣契魔者技能列表)
        self.技能序号= copy.deepcopy(极诣契魔者技能序号)

    def 被动倍率计算(self):
        super().被动倍率计算()

        self.技能栏[self.技能序号['血饮狂舞']].被动倍率 /= self.技能栏[self.技能序号['唤魔弑神剑']].加成倍率(self.武器类型)

        self.技能栏[self.技能序号['唤魔塔莫斯之袭']].被动倍率 /= self.技能栏[self.技能序号['唤魔弑神剑']].加成倍率(self.武器类型)

        唤魔弑神剑等级 = self.技能栏[self.技能序号['唤魔弑神剑']].等级

        self.技能栏[self.技能序号['血饮狂舞']].被动倍率 *= 1.38 + 唤魔弑神剑等级 * 0.02

        self.技能栏[self.技能序号['唤魔塔莫斯之袭']].终结百分比 *= 1.38 + 唤魔弑神剑等级 * 0.02

        if 唤魔弑神剑等级 != 0:
            self.技能栏[self.技能序号['唤魔塔莫斯之袭']].多段次数 += int((唤魔弑神剑等级 + 2)/3) + 2



class 极诣契魔者(角色窗口):
    def 窗口属性输入(self):
        self.初始属性 = 极诣契魔者角色属性()
        self.角色属性A = 极诣契魔者角色属性()
        self.角色属性B = 极诣契魔者角色属性()
        self.一觉序号 = 极诣契魔者一觉序号
        self.二觉序号 = 极诣契魔者二觉序号
        self.三觉序号 = 极诣契魔者三觉序号
        self.护石选项 = copy.deepcopy(极诣契魔者护石选项)
        self.符文选项 = copy.deepcopy(极诣契魔者符文选项)
